$(function () {
	// アップロードフォームの表示
	$("dd.Form > .UploadFormSwitch").click (function (e) {
		var b = $.browser;
		if(b.msie && b.version.match(/^6/)){
				$("select").hide();
		}
		var backDiv = $(this).next('.UploadFormBack');
		var targetDiv = $(backDiv).next('.UploadForm');
		targetDiv.css("top", $(".EditorMain").scrollTop());
		backDiv.css("opacity", 0); targetDiv.css("opacity", 0);

		backDiv.height ($('.EditorMain').height()*2);

		backDiv.show(); targetDiv.show();
		backDiv.fadeTo("fast", 0.8); targetDiv.fadeTo("fast", 1, function () {
			jQuery.each (Swiff.Uploader, function () {
				if (this.setPosition) {
					// 開くたびにリサイズしないと正常な位置が取得できない。
					this.setPosition();
				}
			});
		});
		e.preventDefault();
	});

	// アップロードフォームを閉じる
	$(".UploadForm > .UploadFormClose").click (function (e) {
		var b = $.browser;
		if(b.msie && b.version.match(/^6/)){
				$("select").show();
		}
		var targetDiv = $(this).parents('.UploadForm');
		var backDiv = $(targetDiv).prev('.UploadFormBack');
		targetDiv.fadeOut("fast"); backDiv.fadeOut("fast");
		jQuery.each (Swiff.Uploader, function () {
			if (this.closePosition) {
				this.closePosition();
			}
		});
		e.preventDefault();
	});

	// サーバ上のファイルを削除する
	$(".UploadForm .sfile-remove").live("click", function (e) {
		if (window.confirm ('削除しますか？')) {
			var tLi = $(this).parents('li');
			var pDiv = $(this).parents('li').parents('ul').parents('fieldset').parents('div');
			var path = pDiv.children('.upload').children('input#url').val();
			var File = encodeURI($(this).next().text());
	
			$.ajax({
				'type': "GET",
				'url': path + '/' + File,
				'dataType': "xml",
				'success': function(xml){
					var msg = $(xml).children('response').children('message').text();
					if (msg) {
						alert(msg);
						if ($(xml).children('response').children('delete').text() == 'complete') {
							tLi.fadeOut('fast', function() {
								tLi.remove();
								jQuery.each (Swiff.Uploader, function () {
									if (this.setPosition) {
										this.setPosition();
									}
								});
							});
						}
					} else {
						alert("失敗しました。");
					}
				},
				'error': function (Request, Status, e) {
					alert ("エラーが発生しました。\n Status:" + Request.statusText);
				}
			});
		}
		e.preventDefault();
	});

	// 読み込み失敗時の保険
	$('fieldset.upload a').click (function (e) {
		alert ("swfの読み込みに失敗した可能性があります。\n動作しない場合、ページを再読み込みしてください。");
		e.preventDefault();
	});

	$('.upload .file-name a').live ("click" , function (e) {
		e.preventDefault();
	});
	
	uForms = $('.UploadForm');
	jQuery.each(uForms, function() {
		var id = $(this).attr('id');
		if (!id) return;
		var up = new FancyUpload('#'+ id + ' .upload .upload-status', '#'+ id + ' .upload .upload-list', {
			target: '#'+ id + ' .upload .upload-browse',		// flashを設置する位置を指定
			verbose: null,					// 詳細ログの表示フラグ
			path: './vars/mod/upload/src/Swiff.Uploader.swf',

			fallback: '#'+ id + ' .upload-fallback',	// フォールバックの指定（flashが使えない時のフォーム）

			multiple: $(this).children('.upload').children('input#multiple').val(),					// ファイル複数選択スイッチ
			url: $(this).children('.upload').children('input#url').val(),
			typeFilter: $(this).children('.upload').children('input#typeFilter').val(),
			typeFilterDescription: $(this).children('.upload').children('input#typeFilterDescription').val(),
			method: 'post',
			data: 'Session=' + $(this).children('.upload').children('input#session').val(),
			mergeData: null,
			fieldName: id,
			
			width: 0,
			height: 0,

			// コールバック関数の登録
			Callbacks: {
				onload: function () {
					var upload = this;

					$('fieldset.upload a').unbind ('click');

					$('#'+ id + ' .upload .upload-clear').click (function (e) {
						upload.instance.remove();
						$(upload.list + ' .file').each (function() { $(this).fadeOut("fast"); });
						e.preventDefault();
					});

					$('#'+ id + ' .upload .upload-upload').click (function (e) {
						upload.instance.start();
						e.preventDefault();
					});

					$('#'+ id + ' .upload .file-remove').live ('click', function (e) {
						var thislist = $(this).parents('li');
						var id = $(upload.list + ' .file').index(thislist);
						upload.instance.fileRemove(id + 1);
						thislist.fadeOut ("fast");
						e.preventDefault();
					});
//					this.setPosition();
				},

				onselect: function (args) {
					var Files = args[0];
					var failFiles = args[1];
					var Queue = args[2];

					var upload = this;

					for (var File in Files) {
						build = '<li class="file" id="' + Files[File].id + '">';
						build += '<span class="file-size">' + Files[File].size + 'B</span>';
						build += '<a class="file-remove" href="#" title="Click to remove this entry.">Remove</a>';
						build += '<span class="file-name"><a href="#">'+ Files[File].name + '</a></span>';
						build += '<span class="file-info"></span>';
						build += '</li>';
						var list = $(upload.list);
						if (list) {
							list.append (build);
						}
					}
				},

				onstart: function () {
				},

				onfileStart: function (args) {
				},

				onfileComplete: function (args) {
					var upload = this;
					var list = $(upload.list).children('.file').filter('#'+args[0].id);
					if (list) {
						var res = $(args[0].response.text);
						if (res.children('message')) {
							list.children ('.file-remove').addClass('sfile-remove');
							list.children ('.file-remove').removeClass('file-remove');
							list.children ('.file-info').append(res.children('message'));
						}
						list.addClass('file-success');
					}
					$().switchUpdate();
				}

			}
		});
	});
});
